#include "../macro.h"
#include <iostream>
#include <pthread.h>

using std::cout;
using std::endl;

void *add(void *param)
{
    long *nums = (long *)param;
    return (void *)(nums[0] + nums[1]);
}

int main(int args, char *argv[])
{
    pthread_t thid;
    long nums[] = {1, 100};

    int ret = pthread_create(&thid, nullptr, add, nums);
    PTHREAD_ERR_CHECK(ret, 0, "pthread_create")


    long ans;
    /*
        线程返回数据时的大概代码：
        *ans = (void *)101;

        这里因为 void * 和 long的大小相同；
        相当于把直接把 8个字节大小的数据，直接使用memset 拷贝到 传入的地址中
    */
    pthread_join(thid, (void **)&ans);

    printf("ans = %ld\n", ans);
    return 0;
}